// 每个状态管理文件都要引入此方法
import { defineStore } from 'pinia'
 
// 官方建议取名遵从 useXXXStore 形式
// 'home' 为当前store的唯一标识 类似ID 
// 取名建议与文件名称一致 便于记忆和管理
// pinia舍弃了冗长的mutations属性 
// 以下是pinia的一种写法 因与vuex相似 便于学习和记忆
export const useHomeStore = defineStore('home',{
    state:()=>{
        return{
            list:[
				{
					name:"zhansan",
					tel:"13511111111",
					city:"北京市海淀区",
					details:"2号楼",
					isDefault:false,
				},
				{
					name:"zhansan",
					tel:"13511111111",
					city:"北京市海淀区",
					details:"2号楼",
					isDefault:true,
				},
				{
					name:"zhansan2",
					tel:"13511111111",
					city:"北京市海淀区",
					details:"2号楼",
					isDefault:false,
				}
			]
        }
    },
    //state也可写成这样
    // state:()=>({
    //     num:0
    // }),
    actions:{
	    createPath( obj:typeof this.list[0] ){
			if(obj.isDefault){
				this.removePath();
			}
			this.list.unshift( obj );
		},
		updataPath(obj:{index:number,item:any} ){
			if(obj.item.isDefault){
				this.removePath();
			}
			for(let key in obj.item){
				(this.list[obj.index] as any)[key] = obj.item[key];
			}
		},
		//把之前选中的变成未选中
		removePath(){
			this.list.forEach((v:any)=>{
				if(v.isDefault){
					v.isDefault = false;
				}
			})
		}
    },
    getters:{
        // 这里取名不可与state里的变量一致 所以取名getNum
    }
})